package com.shortlink.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.shortlink.pojos.dto.dataobject.PageResult;
import com.shortlink.pojos.dto.dataobject.ShortLinkStatsRecordDO;
import com.shortlink.pojos.dto.req.*;
import com.shortlink.pojos.dto.resp.LinkRespDTO;
import com.shortlink.pojos.dto.resp.LinkStatsRespDTO;
import com.shortlink.pojos.entity.LinkDO;

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public interface ILinkService extends IService<LinkDO> {
    void jump(String shortUri, ServletRequest request, ServletResponse response);

    void createLink(LinkCreateReqDTO linkCreateReqDTO);

    void updateLink(LinkUpdateReqDTO linkUpdateReqDTO);

    void deleteLink(String shortUri);

    PageResult<LinkRespDTO> pageLink(LinkPageQueryReqDTO linkPageQueryReqDTO);


    PageResult<LinkRespDTO> pageRecycleLink(RecyclePageQueryReqDTO recyclePageQueryReqDTO);

    void deleteRecycleLink(String shortUri);

    void recoverRecycleLink(String shortUri);

    String getDescriptionByUrl(String url);

    String getFaviconByUrl(String url);

    /**
     * 短链接统计
     * 插入数据库
     *
     * @param shortLinkStatsRecord 短链接统计实体参数
     */
    void shortLinkStats(ShortLinkStatsRecordDO shortLinkStatsRecord);

    /**
     * 得到监控数据
     * @param requestParam
     * @return
     */
    LinkStatsRespDTO monitoringData(LinkStatsReqDTO requestParam);
}
